# -*- coding: utf-8 -*-
from functools import cached_property
from pydantic_settings import BaseSettings

class Settings(BaseSettings):
    MYSQL_USER: str
    MYSQL_PASSWORD: str
    MYSQL_HOST: str
    MYSQL_PORT: int
    MYSQL_DB: str


    # 讯飞语音识别配置
    IFLYTEK_APPID: str
    IFLYTEK_APIKEY: str
    IFLYTEK_APISECRET: str

    #AI翻译服务配置
    IFLYTEK_HOST: str #= "ntrans.xfyun.cn"
    IFLYTEK_REQUEST_URI: str #= "/v2/ots"

    # 豆包大模型语音识别配置
    DOUBAO_APP_KEY: str
    DOUBAO_ACCESS_KEY: str
    DOUBAO_RESOURCE_ID: str
    DOUBAO_WS_URL: str

    # 豆包大模型TTS配置
    DOUBAO_TTS_CLUSTER: str = "volcano_tts"
    DOUBAO_TTS_VOICE_TYPE: str = "zh_male_aojiaobazong_emo_v2_mars_bigtts"

    # 阿里云语音识别配置
    ALIYUN_API_KEY: str = "sk-02e1be9ce510429d8c28950a27ac6957"
    ALIYUN_MODEL: str = "paraformer-realtime-v2"  # 默认使用最新多语种模型

    @property
    def DB_URL(self):
        return f"mysql+pymysql://{self.MYSQL_USER}:{self.MYSQL_PASSWORD}@{self.MYSQL_HOST}:{self.MYSQL_PORT}/{self.MYSQL_DB}"

    @property
    def DB_URL_WITHOUT_DB(self):
        return f"mysql+pymysql://{self.MYSQL_USER}:{self.MYSQL_PASSWORD}@{self.MYSQL_HOST}:{self.MYSQL_PORT}/"
    


    @cached_property
    def LANG_NAME_MAP(self) -> dict:
        return {
            "cn": "中文(简体)", "cht": "中文(繁体)", "en": "英语", "ja": "日语", "ko": "韩语", "ru": "俄语", "fr": "法语",
            "es": "西班牙语", "ar": "阿拉伯语", "pt": "葡萄牙语", "af": "南非荷兰语", "am": "阿姆哈拉语", "az": "阿塞拜疆语",
            "ba": "巴什基尔语", "be": "白俄罗斯语", "bem": "别姆巴语", "bg": "保加利亚语", "bi": "比斯拉马语", "bn": "孟加拉语",
            "bs": "波斯尼亚语", "ca": "加泰罗尼亚语", "ceb": "宿务语", "co": "科西嘉语", "crs": "塞舌尔克里奥尔语", "cs": "捷克语",
            "cy": "威尔士语", "da": "丹麦语", "de": "德语", "ee": "埃维语", "el": "希腊语", "eo": "世界语", "et": "爱沙尼亚语",
            "eu": "巴斯克语", "fa": "波斯语", "fi": "芬兰语", "fil": "菲律宾语", "fj": "斐济语", "fy": "弗里西语", "ga": "爱尔兰语",
            "gd": "苏格兰盖尔语", "gl": "加利西亚语", "gu": "古吉拉特语", "ha": "豪萨语", "haw": "夏威夷语", "he": "希伯来语",
            "hi": "印地语", "hr": "克罗地亚语", "ht": "海地克里奥尔语", "hu": "匈牙利语", "hy": "亚美尼亚语", "id": "印尼语",
            "ig": "伊博语", "is": "冰岛语", "it": "意大利语", "jv": "印尼爪哇语", "jy": "格鲁吉亚语", "ka": "哈萨克语",
            "kek": "凯克其语", "kg": "刚果语", "kk": "哈萨克语（西里尔）", "km": "高棉语", "kn": "卡纳达语", "ku": "库尔德语",
            "ky": "吉尔吉斯语", "la": "拉丁语", "lb": "卢森堡语", "lg": "卢干达语", "ln": "林加拉语", "lo": "老挝语",
            "lt": "立陶宛语", "lv": "拉脱维亚语", "mg": "马尔加什语", "mhr": "马里语", "mi": "毛利语", "mk": "马其顿语",
            "ml": "马拉雅拉姆语", "mn": "蒙古语(西里尔)", "mr": "马拉地语", "mrj": "山地马里语", "ms": "马来语", "mt": "马耳他语",
            "mww": "白苗文", "my": "缅甸语", "nb": "博克马尔语", "ne": "尼泊尔语", "nl": "荷兰语", "no": "挪威语", "ny": "齐切瓦语",
            "om": "奥罗莫语", "os": "奥赛梯语", "otq": "克雷塔罗奥托米语", "pa": "旁遮普语", "pap": "帕皮阿门托语", "pl": "波兰语",
            "ps": "普什图语", "rn": "隆迪语", "ro": "罗马尼亚语", "rw": "卢旺达语", "sd": "信德语", "sg": "桑戈语", "si": "僧伽罗语",
            "sk": "斯洛伐克语", "sl": "斯洛文尼亚语", "sm": "萨摩亚语", "sn": "修纳语", "so": "索马里语", "sq": "阿尔巴尼亚语",
            "sr": "塞尔维亚语", "st": "塞索托语", "su": "印尼巽他语", "sv": "瑞典语", "sw": "斯瓦希里语", "ta": "泰米尔语",
            "te": "泰卢固语", "tg": "塔吉克语", "th": "泰语", "ti": "藏语", "tig": "提格雷语", "tk": "土库曼语", "to": "汤加语",
            "tpi": "巴布亚皮钦语", "tr": "土耳其语", "ts": "聪加语", "tt": "鞑靼语", "tw": "契维语", "ty": "塔希提语",
            "udm": "乌德穆尔特语", "uk": "乌克兰语", "ur": "乌尔都语", "uy": "维吾尔语", "uz": "乌兹别克语", "vi": "越南语",
            "war": "瓦瑞语", "xh": "南非科萨语", "yi": "意第绪语", "yo": "约鲁巴语", "yua": "尤卡坦玛雅语", "yue": "广东话", "zu": "南非祖鲁语"
        }

    class Config:
        env_file = ".env"

settings = Settings()
